/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.documentar.model;

import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import javax.swing.DefaultComboBoxModel;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Santos
 */
public class ClienteModel {

    private int codigo;
    private RevendaModel revendaModel;
    private ClienteModel clientePaiModel;
    private String nomeRazao;
    private String nomeFantasia;
    private String numeroDocumento;
    private String email;
    private String telefoneEmpresa1;
    private String telefoneEmpresa2;
    private String codigoUnidadeNegocio;
    private String contato;
    private String celularContato1;
    private String celularContato2;
    private String celularContato3;
    private String telefoneContato1;
    private String telefoneContato2;
    private String telefoneContato3;
    private String emailContato;
    private char ativo;
    /**
     * Dados de endereço
     */
    private String endereco;
    private String numeroCasa;
    private String complementoEndereco;
    private String bairro;
    private String cidade;
    private String cep;
    private String estado;
    private String ufEstado;
    private String pais;

//    private char regimeTributario;
    /*Dados de conexão com o ERP*/
    private String hostERP;
    private String nomeBancoDadosERP;
    private String portaERP;
    private String usuarioERP;
    private String senhaERP;

    /*Dados de conexão com o NFE*/
    private String hostNFE;
    private String nomeBancoNFE;
    private String portaNFE;
    private String usuarioNFE;
    private String senhaNFE;

    /*Dados de conexão com o WMS*/
    private String hostWMS;
    private String nomeBancoWMS;
    private String portaWMS;
    private String usuarioWMS;
    private String senhaWMS;

    /*Dados de conexão com o Produção*/
    private String hostProducao;
    private String nomeBancoProducao;
    private String portaProducao;
    private String usuarioProducao;
    private String senhaProducao;

    /*Dadis de conexão com o Frente de Loja*/
    private String hostFrenteLoja;
    /**
     * nome do banco de dados que está as configurações de versão
     */
    private String nomeBancoFrenteLojaSRV;
    /**
     * nome do banco de dados que está os dados da unidade
     */
    private String nomeBancoFrenteLojaECF;
    private String portaFrenteLoja;
    private String usuarioFrenteLoja;
    private String senhaFrenteLoja;
    private String nomeTela;

    public String getNomeTela() {
        return nomeTela;
    }

    public void setNomeTela(String nomeTela) {
        this.nomeTela = nomeTela;
    }

    public String getEmailContato() {
        return emailContato;
    }

    public void setEmailContato(String emailContato) {
        this.emailContato = emailContato;
    }

    public String getEndereco() {
        return endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    public String getNumeroCasa() {
        return numeroCasa;
    }

    public void setNumeroCasa(String numeroCasa) {
        this.numeroCasa = numeroCasa;
    }

    public String getComplementoEndereco() {
        return complementoEndereco;
    }

    public void setComplementoEndereco(String complementoEndereco) {
        this.complementoEndereco = complementoEndereco;
    }

    public String getBairro() {
        return bairro;
    }

    public void setBairro(String bairro) {
        this.bairro = bairro;
    }

    public String getCidade() {
        return cidade;
    }

    public void setCidade(String cidade) {
        this.cidade = cidade;
    }

    public String getCep() {
        return cep;
    }

    public void setCep(String cep) {
        this.cep = cep;
    }

    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }

    public String getUfEstado() {
        return ufEstado;
    }

    public void setUfEstado(String ufEstado) {
        this.ufEstado = ufEstado;
    }

    public String getPais() {
        return pais;
    }

    public void setPais(String pais) {
        this.pais = pais;
    }

    public String getHostNFE() {
        return hostNFE;
    }

    public void setHostNFE(String hostNFE) {
        this.hostNFE = hostNFE;
    }

    public String getNomeBancoNFE() {
        return nomeBancoNFE;
    }

    public void setNomeBancoNFE(String nomeBancoNFE) {
        this.nomeBancoNFE = nomeBancoNFE;
    }

    public String getPortaNFE() {
        return portaNFE;
    }

    public void setPortaNFE(String portaNFE) {
        this.portaNFE = portaNFE;
    }

    public String getUsuarioNFE() {
        return usuarioNFE;
    }

    public void setUsuarioNFE(String usuarioNFE) {
        this.usuarioNFE = usuarioNFE;
    }

    public String getSenhaNFE() {
        return senhaNFE;
    }

    public void setSenhaNFE(String senhaNFE) {
        this.senhaNFE = senhaNFE;
    }

    public String getHostWMS() {
        return hostWMS;
    }

    public void setHostWMS(String hostWMS) {
        this.hostWMS = hostWMS;
    }

    public String getNomeBancoWMS() {
        return nomeBancoWMS;
    }

    public void setNomeBancoWMS(String nomeBancoWMS) {
        this.nomeBancoWMS = nomeBancoWMS;
    }

    public String getPortaWMS() {
        return portaWMS;
    }

    public void setPortaWMS(String portaWMS) {
        this.portaWMS = portaWMS;
    }

    public String getUsuarioWMS() {
        return usuarioWMS;
    }

    public void setUsuarioWMS(String usuarioWMS) {
        this.usuarioWMS = usuarioWMS;
    }

    public String getSenhaWMS() {
        return senhaWMS;
    }

    public void setSenhaWMS(String senhaWMS) {
        this.senhaWMS = senhaWMS;
    }

    public String getHostProducao() {
        return hostProducao;
    }

    public void setHostProducao(String hostProducao) {
        this.hostProducao = hostProducao;
    }

    public String getNomeBancoProducao() {
        return nomeBancoProducao;
    }

    public void setNomeBancoProducao(String nomeBancoProducao) {
        this.nomeBancoProducao = nomeBancoProducao;
    }

    public String getPortaProducao() {
        return portaProducao;
    }

    public void setPortaProducao(String portaProducao) {
        this.portaProducao = portaProducao;
    }

    public String getUsuarioProducao() {
        return usuarioProducao;
    }

    public void setUsuarioProducao(String usuarioProducao) {
        this.usuarioProducao = usuarioProducao;
    }

    public String getSenhaProducao() {
        return senhaProducao;
    }

    public void setSenhaProducao(String senhaProducao) {
        this.senhaProducao = senhaProducao;
    }

    public String getHostFrenteLoja() {
        return hostFrenteLoja;
    }

    public void setHostFrenteLoja(String hostFirebird) {
        this.hostFrenteLoja = hostFirebird;
    }

    public String getNomeBancoDadosFrenteLojaSRV() {
        return nomeBancoFrenteLojaSRV;
    }

    public void setNomeBancoFrenteLojaSRV(String nomeBancoFirebirdSRV) {
        this.nomeBancoFrenteLojaSRV = nomeBancoFirebirdSRV;
    }

    public String getNomeBancoDadosFrenteLojaECF() {
        return nomeBancoFrenteLojaECF;
    }

    public void setNomeBancoFrenteLojaECF(String nomeBancoFirebirdECF) {
        this.nomeBancoFrenteLojaECF = nomeBancoFirebirdECF;
    }

    public String getPortaFrenteLoja() {
        return portaFrenteLoja;
    }

    public void setPortaFrenteLoja(String portaFirebird) {
        this.portaFrenteLoja = portaFirebird;
    }

    public String getUsuarioFrenteLoja() {
        return usuarioFrenteLoja;
    }

    public void setUsuarioFrenteLoja(String usuarioFrenteLoja) {
        this.usuarioFrenteLoja = usuarioFrenteLoja;
    }

    public String getSenhaFrenteLoja() {
        return senhaFrenteLoja;
    }

    public void setSenhaFrenteLoja(String senhaFrenteLoja) {
        this.senhaFrenteLoja = senhaFrenteLoja;
    }

    public String getHostERP() {
        return hostERP;
    }

    public void setHostERP(String host) {
        this.hostERP = host;
    }

    public String getNomeBancoDadosERP() {
        return nomeBancoDadosERP;
    }

    public void setNomeBancoDadosERP(String nomeBanco) {
        this.nomeBancoDadosERP = nomeBanco;
    }

    public String getPortaERP() {
        return portaERP;
    }

    public void setPortaERP(String portaERP) {
        this.portaERP = portaERP;
    }

    public String getUsuarioERP() {
        return usuarioERP;
    }

    public void setUsuarioERP(String usuario) {
        this.usuarioERP = usuario;
    }

    public String getSenhaERP() {
        return senhaERP;
    }

    public void setSenhaERP(String senha) {
        this.senhaERP = senha;
    }

    public RevendaModel getRevendaModel() {
        if (revendaModel == null) {
            revendaModel = new RevendaModel();
        }
        return revendaModel;
    }

    public void setRevendaModel(RevendaModel revendaModel) {
        this.revendaModel = revendaModel;
    }

    public ClienteModel getClientePaiModel() {
        if (clientePaiModel == null) {
            clientePaiModel = new ClienteModel();
        }
        return clientePaiModel;
    }

    public void setClientePaiModel(ClienteModel clientePaiModel) {
        this.clientePaiModel = clientePaiModel;
    }

    public String getNomeRazao() {
        return nomeRazao;
    }

    public void setNomeRazao(String nomeRazao) {
        this.nomeRazao = nomeRazao;
    }

    public String getNomeFantasia() {
        return nomeFantasia;
    }

    public void setNomeFantasia(String nomeFantasia) {
        this.nomeFantasia = nomeFantasia;
    }

    public String getNumeroDocumento() {
        return numeroDocumento;
    }

    public void setNumeroDocumento(String numeroDocumento) {
        this.numeroDocumento = numeroDocumento;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getTelefoneEmpresa1() {
        return telefoneEmpresa1;
    }

    public void setTelefoneEmpresa1(String telefoneEmpresa1) {
        this.telefoneEmpresa1 = telefoneEmpresa1;
    }

    public String getTelefoneEmpresa2() {
        return telefoneEmpresa2;
    }

    public void setTelefoneEmpresa2(String telefoneEmpresa2) {
        this.telefoneEmpresa2 = telefoneEmpresa2;
    }

    public String getCodigoUnidadeNegocio() {
        return codigoUnidadeNegocio;
    }

    public void setCodigoUnidadeNegocio(String codigoUnidadeNegocio) {
        this.codigoUnidadeNegocio = codigoUnidadeNegocio;
    }

    public String getContato() {
        return contato;
    }

    public void setContato(String contato) {
        this.contato = contato;
    }

    public String getCelularContato1() {
        return celularContato1;
    }

    public void setCelularContato1(String celularContato1) {
        this.celularContato1 = celularContato1;
    }

    public String getCelularContato2() {
        return celularContato2;
    }

    public void setCelularContato2(String celularContato2) {
        this.celularContato2 = celularContato2;
    }

    public String getCelularContato3() {
        return celularContato3;
    }

    public void setCelularContato3(String celularContato3) {
        this.celularContato3 = celularContato3;
    }

    public String getTelefoneContato1() {
        return telefoneContato1;
    }

    public void setTelefoneContato1(String telefoneContato1) {
        this.telefoneContato1 = telefoneContato1;
    }

    public String getTelefoneContato2() {
        return telefoneContato2;
    }

    public void setTelefoneContato2(String telefoneContato2) {
        this.telefoneContato2 = telefoneContato2;
    }

    public String getTelefoneContato3() {
        return telefoneContato3;
    }

    public void setTelefoneContato3(String telefoneContato3) {
        this.telefoneContato3 = telefoneContato3;
    }

    /**
     * Ação do scrhostERPt SQL na execução do programa
     */
    private String actionScript;
    /**
     * Modelo de um comboBox para utiliza nas telas
     */
    private DefaultComboBoxModel modelComboBox;
    /**
     * Modelo de uma table para utilizar nas telas
     */
    private DefaultTableModel modelTable;
    /**
     * Lista contendo os dados relacionados da consulta feita na tabela setor.
     * Mas é necessário rever o nome dessa variável, sugestão: lista+Classe
     */
    private List<ClienteModel> listaCliente;
    /**
     * Variavel responsável por recepcionar dados extraidos das consultas
     * executadas na banco de dados
     */
    private ResultSet resultSet;

    public int getCodigo() {
        return codigo;
    }

    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }

    public char getAtivo() {
        return ativo;
    }

    public void setAtivo(char ativo) {
        this.ativo = ativo;
    }

    public String getActionScript() {
        return actionScript;
    }

    public void setActionScript(String actionScript) {
        this.actionScript = actionScript;
    }

    public DefaultComboBoxModel getModelComboBox() {
        if (modelComboBox == null) {
            modelComboBox = new DefaultComboBoxModel();
            modelComboBox.addElement("ESCOLHER");
        }
        return modelComboBox;
    }

    public void setModelComboBox(DefaultComboBoxModel modelComboBox) {
        this.modelComboBox = modelComboBox;
    }

    public DefaultTableModel getModelTable() {
        if (modelTable == null) {
            modelTable = new DefaultTableModel();
            modelTable.addColumn("Codigo");
            modelTable.addColumn("Revenda");
            modelTable.addColumn("Cliente Pai");
            modelTable.addColumn("Nome Razão");
            modelTable.addColumn("Nome Fantasia");
            modelTable.addColumn("Numero Documento");
            modelTable.addColumn("Email");
            modelTable.addColumn("Telefone Empresa 1");
            modelTable.addColumn("Telefone Empresa 2");
            modelTable.addColumn("Unidade Negocio");
            modelTable.addColumn("Contato");
            modelTable.addColumn("Celular 1");
            modelTable.addColumn("Celular 2");
            modelTable.addColumn("Celular 3");
            modelTable.addColumn("Telefone 1");
            modelTable.addColumn("Telefone 2");
            modelTable.addColumn("Telefone 3");
            modelTable.addColumn("Email Contato");

            modelTable.addColumn("Endereco");
            modelTable.addColumn("Complemento");
            modelTable.addColumn("Bairro");
            modelTable.addColumn("CEP");
            modelTable.addColumn("Cidade");
            modelTable.addColumn("Estado");
            modelTable.addColumn("UF");
            modelTable.addColumn("Pais");

            modelTable.addColumn("Ativo");

        }
        return modelTable;
    }

    public void setModelTable(DefaultTableModel modelTable) {
        this.modelTable = modelTable;
    }

    public List<ClienteModel> getListaCliente() {
        if (listaCliente == null) {
            listaCliente = new ArrayList<>();
        }
        return listaCliente;
    }

    public void setListaCliente(List<ClienteModel> listaProduto) {
        this.listaCliente = listaProduto;
    }

    public ResultSet getResultSet() {
        return resultSet;
    }

    public void setResultSet(ResultSet resultSet) {
        this.resultSet = resultSet;
    }

    /**
     * Metodo responsável por busca o cliente pelo código
     *
     * @param codigo
     * @return
     */
    public ClienteModel getCliente(int codigo) {
        ClienteModel model = null;
        for (ClienteModel clienteModel : getListaCliente()) {
            if (clienteModel.getCodigo() == codigo) {
                model = clienteModel;
                break;
            }
        }
        return model;
    }

    /**
     * Metodo responsável por busca o cliente pelo numero do documento
     *
     * @param numeroDocumento
     * @return
     */
    public ClienteModel getCliente(String numeroDocumento) {
        ClienteModel model = new ClienteModel();
        for (ClienteModel clienteModel : getListaCliente()) {
            if (clienteModel.getNumeroDocumento().equals(numeroDocumento)) {
                return clienteModel;
            }
        }
        model.setCodigo(0);
        return model;
    }

}
